package com.zjdiepu.www.security.server.encode;

import org.apache.commons.lang3.StringUtils;

import com.zjdiepu.www.config.ServerConfig;
import com.zjdiepu.www.security.base.enums.EncodeType;
import com.zjdiepu.www.security.server.core.Partners;

/**
 * 类描述: 加解密工具 <br/>     
 * 项目名称:zjdiepu-client <br/> 
 * 类名称:ServerEncryptAndDencryptUtil <br/>     
 * 创建人:xiongxiaotun <br/> 
 * 创建时间:2017年8月16日 下午2:44:26  <br/>   
 * 修改人:xiongxiaotun <br/> 
 * 修改时间: 2017年8月16日 下午2:44:26   <br/>  
 * 修改备注:   <br/> 
 * @version V1.0   <br/>
 */
public class ServerEncryptAndDencryptUtil {
	/**
	 * 加密
	 * @author xiongxiaotun <br/>
	 * @Title encrypt  <br/>
	 * @Description 加密  <br/>
	 * @param content
	 * @return
	 * @version V1.0  <br/>
	 */
	public static String encrypt(String content, Partners partner){
		if(StringUtils.isBlank(content)) {
			return null;
		}
		String encodeType_ = ServerConfig.getPartnerEncodeType(partner);
		EncodeType encodeType = EncodeType.getByCode(encodeType_);
		String result = null;
		switch (encodeType) {
		case RSA:
			result = ServerRsaUtil.encrypt(content, partner);
			break;
		case JWT:
			result = ServerJwtUtil.encode(content, partner);
			break;
		default:
			result = ServerRsaUtil.encrypt(content, partner);
			break;
		}
		return result;
	}
	
	/**
	 * 解密
	 * @author xiongxiaotun <br/>
	 * @Title dencrypt  <br/>
	 * @Description 解密  <br/>
	 * @param content
	 * @param partner
	 * @return
	 * @version V1.0  <br/>
	 */
	public static String dencrypt(String content, Partners partner){
		if(StringUtils.isBlank(content)) {
			return null;
		}
		//JSON对java String 类型会多出引号
		if(content.startsWith("\"")){
			content = content.substring(1);
		}
		if(content.endsWith("\"")) {
			content = content.substring(0, content.length() - 1);
		}
		String encodeType_ = ServerConfig.getPartnerEncodeType(partner);
		EncodeType encodeType = EncodeType.getByCode(encodeType_);
		String result = null;
		switch (encodeType) {
		case RSA:
			result = ServerRsaUtil.decrypt(content, partner);
			break;
		case JWT:
			result = ServerJwtUtil.dencode(content, partner);
			break;
		default:
			result = ServerRsaUtil.decrypt(content, partner);
			break;
		}
		return result;
	}
}



